#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <map>

using namespace std;

bool is_prime(int n)
{
    if (n <= 1) return false;

    for (int i = 2; i * i <= n; i++)
    {
        if (n % i == 0) return false;
    }

    return true;
}

void Test1()
{
    string str;
    cin >> str;

    map<char, int> m;
    for (auto e : str)
    {
        m[e]++;
    }

    int _max = INT_MIN, _min = INT_MAX;

    for (auto& e : m)
    {
        _max = max(_max, e.second);
        _min = min(_min, e.second);
    }

    if (is_prime(_max - _min))
    {
        cout << "Lucky Word" << '\n' << _max - _min << endl;
    }
    else
    {
        cout << "No Answer\n0" << endl;
    }
}

class Solution {
public:


    template<class T>
    class cmp
    {
    public:
        bool operator()(const T& x, const T& y)
        {
            return x[0] < y[0];
        }
    };

    bool hostschedule(vector<vector<int> >& schedule) {

        int n = schedule.size();

        sort(schedule.begin(), schedule.end(), cmp<vector<int>>());

        for (int i = 0; i < n - 1; i++)
        {
            if (schedule[i][1] > schedule[i + 1][0])
            {
                return false;
            }
        }

        return true;
    }
};

bool EquiSum(vector<int> v, int sum) {
    if (sum % 2 == 1) {
        return false;
    }

    int n = v.size();

    sum /= 2;
    vector<int> dp(sum + 1);
    dp[0] = 1;

    for (int i = 1; i <= n; i++)
    {
        for (int j = sum; j >= v[i - 1]; j--)
        {
            dp[j] = dp[j - v[i - 1]];
        }
    }
    return dp[sum];
}


int main() {

    int n;
    cin >> n;
    vector<int> v(n);

    int sum = 0;

    for (int i = 0; i < n; i++) {
        cin >> v[i];
        sum += v[i];
    }

    if (EquiSum(v, sum)) {
        cout << "true" << endl;
    }
    else {
        cout << "false" << endl;
    }
    return 0;
}